package org.ruoyi.system.service;

import org.ruoyi.system.domain.SysFileInfo;
import org.ruoyi.system.domain.vo.SysFileInfoVo;
import org.ruoyi.system.domain.bo.SysFileInfoBo;
import org.ruoyi.core.page.TableDataInfo;
import org.ruoyi.core.page.PageQuery;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.Collection;
import java.util.List;

/**
 * 文件记录Service接口
 *
 * @author ageerle
 * @date 2025-04-29
 */
public interface ISysFileInfoService {

    /**
     * 查询文件记录
     */
    SysFileInfoVo queryById(String id);

    /**
     * 查询文件记录列表
     */
    TableDataInfo<SysFileInfoVo> queryPageList(SysFileInfoBo bo, PageQuery pageQuery);

    /**
     * 查询文件记录列表
     */
    List<SysFileInfoVo> queryList(SysFileInfoBo bo);

    /**
     * 新增文件记录
     */
    Boolean insertByBo(SysFileInfoBo bo);

    /**
     * 修改文件记录
     */
    Boolean updateByBo(SysFileInfoBo bo);

    /**
     * 校验并批量删除文件记录信息
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);

    /**
     * 上传文件
     */
    SysFileInfo upload(MultipartFile file, String bizType);

    /**
     * 下载文件
     */
    void download(String fileId, HttpServletResponse response);

    /**
     * 删除文件
     */
    Boolean deleteFile(String fileId);
}
